package com.hsnn.medstgmini.base.std.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.base.std.model.StdCompprofile;
import com.hsnn.medstgmini.base.std.model.StdCompprofileLog;
import com.hsnn.medstgmini.base.std.service.StdCompprofileManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.ImgUtil;
import com.hsnn.medstgmini.util.Pagination;
/**
 * @category 企业资质控制器
 * @author 韩守松
 * @date 2015年8月21日
 */
@Controller
@RequestMapping("/stdCompprofile")
public class StdCompprofileController {
	
	private static final Logger log = Logger.getLogger(StdCompprofileController.class);
	@Autowired
	private StdCompprofileManager  stdCompprofileManager;
	
	@Autowired
	private HttpServletRequest request;
	
	@Autowired
	private HttpSession session;
	
	
	/**
	 * @category 查看企业资质列表信息
	 * @author 韩守松
	 * @date   2015年8月24日
	 * @param  @param compId
	 * @param  @return
	 */
	@RequestMapping("/toStdCompprofileList")
	public String toStdCompprofileList(String compId){
		request.setAttribute("compId", compId);
		return "/base/std/compprofile/list";
	}
	
	@RequestMapping("/getStdCompprofileListData")
	@ResponseBody
	public Pagination getStdCompprofileListData(Pagination page, StdCompprofile stdCompprofile){
		try {
			stdCompprofileManager.getStdCompprofile(page,stdCompprofile);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			log.error("获取资质信息失败"+e);
			page.setSuccess(false);
		}
		return page;
	}
	
	/**
	 * @category 跳转到企业资质信息新增页面
	 * @author 韩守松
	 * @date   2015年8月24日
	 * @param  @return
	 */
	@RequestMapping("/toStdCompprofileAddJsp")
	public String toStdCompprofileAddJsp(String compId){
		request.setAttribute("compId", compId);
		return "/base/std/compprofile/add";
	}
	
	/**
	 * @category 企业资质信息新增
	 * @author 韩守松
	 * @date   2015年8月24日
	 * @param  @return
	 */
	@RequestMapping("/toStdCompprofileAdd")
	@ResponseBody
	public Pagination toStdCompprofileAdd(Pagination page,StdCompprofile stdCompprofile,@RequestParam(value="licence",required=false)MultipartFile licence){
			page = new Pagination(request);
			FileOutputStream fos = null;
		try {
			SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
			stdCompprofile.setUpdUser(user.getName());
			stdCompprofile.setUpdDatetime(new Date());
			if (StringUtils.isBlank(stdCompprofile.getCompprofileId())) { // 新增企业资质需要上传证书
				if (licence == null || licence.isEmpty()) {
					page.setSuccess(false);
					page.setMsg("请上传企业资质证书！");
					return page;
				}
				if (licence != null) {
					if (licence.getSize() > 3 * 1024 * 1024) {
						page.setSuccess(false);
						page.setMsg("企业资质证书不能大于3M！");
						return page;
					}
					String name = licence.getOriginalFilename();
					if (!ImgUtil.isImg(name)) {
						page.setSuccess(false);
						page.setMsg("企业资质证书请选择图片，图片支持格式：gif, jpg, jpeg, png, bmp！");
						return page;
					}
					String path = session.getServletContext().getRealPath("/");
					path = path.replaceAll("\\\\", "/") + "upload/licence/";
					String filename = path + name;
					File file = new File(filename);
					fos = new FileOutputStream(file);
					fos.write(licence.getBytes());
					fos.flush();
					stdCompprofile.setProfilePicAddr("upload/licence/" + name);
					stdCompprofile.setProfilePicShortcutAddr("upload/licence/" + name);
					/*
					 * 企业资质新增
					 */
					stdCompprofileManager.save(page, stdCompprofile);
					page.setSuccess(true);
				}
			}else{
				/*
				 * 企业资质修改
				 */
				if (licence == null || licence.isEmpty()) {
					StdCompprofile stdCompprofileAgin = new StdCompprofile();
					stdCompprofileAgin = stdCompprofileManager.getStdCompprofileById(stdCompprofile.getCompprofileId());
					stdCompprofile.setProfilePicAddr(stdCompprofileAgin.getProfilePicAddr());
					stdCompprofile.setProfilePicShortcutAddr(stdCompprofileAgin.getProfilePicShortcutAddr());
					
				}else {
					if (licence.getSize() > 3 * 1024 * 1024) {
						page.setSuccess(false);
						page.setMsg("企业资质证书不能大于3M！");
						return page;
					}
					String name = licence.getOriginalFilename();
					if (!ImgUtil.isImg(name)) {
						page.setSuccess(false);
						page.setMsg("企业资质证书请选择图片，图片支持格式：gif, jpg, jpeg, png, bmp！");
						return page;
					}
					String path = session.getServletContext().getRealPath("/");
					path = path.replaceAll("\\\\", "/") + "upload/licence/";
					String filename = path + name;
					File file = new File(filename);
					fos = new FileOutputStream(file);
					fos.write(licence.getBytes());
					fos.flush();
					stdCompprofile.setProfilePicAddr("upload/licence/" + name);
					stdCompprofile.setProfilePicShortcutAddr("upload/licence/" + name);
				}
					stdCompprofileManager.edit(page, stdCompprofile);
					page.setSuccess(true);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			log.error("企业资质信息保存出错"+e);
			page.setSuccess(false);
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return page;
	}
	
	/**
	 * @category 企业资质启用/停用
	 * @author 韩守松
	 * @date   2015年8月25日
	 * @param  @param page
	 * @param  @param stdCompprofile
	 * @param  @return
	 */
	@RequestMapping("/updateStatus.html")
	@ResponseBody
	public Pagination updateStatus(Pagination page,StdCompprofile stdCompprofile){
		try {
			Integer status = stdCompprofile.getStatus();
			SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
			stdCompprofile = stdCompprofileManager.getStdCompprofileById(stdCompprofile.getCompprofileId());
			stdCompprofile.setStatus(status);
			stdCompprofile.setUpdUser(user.getName());
			stdCompprofile.setUpdDatetime(new Date());
			stdCompprofileManager.update(stdCompprofile);
			page.setSuccess(true);
			page.setMsg("保存成功");
		} catch (Exception e) {
			e.printStackTrace();
			log.error("企业信息更新错误"+e);
			page.setSuccess(false);
			page.setMsg("保存失败");
		}
		return page;
	}
	
	/**
	 * @category 跳转到维护记录页面
	 * @author 韩守松
	 * @date   2015年8月25日
	 * @param  @param compprofileId
	 * @param  @return
	 */
	@RequestMapping("/toStdCompprofileLogJsp")
	public String toStdCompprofileLogJsp(String compprofileId){
		request.setAttribute("compprofileId", compprofileId);
		return "/base/std/compprofile/logList";
	}
	
	/**
	 * @category 获取维护记录列表信息
	 * @author 韩守松
	 * @date   2015年8月25日
	 * @param  @param page
	 * @param  @param stdCompprofileLog
	 * @param  @return
	 */
	@RequestMapping("/getStdCompprofileLogDataList")
	@ResponseBody
	public Pagination getStdCompprofileLogDataList(Pagination page,StdCompprofileLog stdCompprofileLog){
		page = new Pagination(request);
		stdCompprofileManager.getStdCompprofileLogData(page, stdCompprofileLog);
		return page;
	}
}
